package com.chushouya.manager.service.admin;



import com.chushouya.manager.dto.admin.role.RoleListDTO;
import com.chushouya.manager.dto.admin.role.RoleQuery;
import com.chushouya.manager.dto.admin.role.RoleSaveDTO;
import com.chushouya.manager.dto.admin.role.RoleSelectDTO;
import com.general.framework.core.schema.PageResult;

import java.util.List;
import java.util.Set;

/**
 * 角色业务
 */
public interface RoleService {

    /**
     * 分页查询角色
     * @param query 查询条件
     * @return 分页对象
     */
    PageResult<RoleListDTO> selectRolePageResult(RoleQuery query);

    /**
     * 查询角色列表
     * @param query 查询条件
     */
    List<RoleListDTO> selectRoleList(RoleQuery query);

    /**
     * 根据用户ID查询角色权限
     */
    Set<String> selectRolePermission(Long adminUserId);

    /**
     * 查询角色详情
     */
    RoleSaveDTO getRoleDetail(Long roleId);

    /**
     * 修改角色状态
     */
    void updateRoleStatus(Long roleId, Integer status);

    /**
     * 删除角色
     */
    void deleteRole(Long roleId);

    /**
     * 获取角色选择框列表
     */
    List<RoleSelectDTO> selectRoleSelect();

    /**
     * 批量取消授权用户
     */
    void deleteAuthUser(Long roleId, List<Long> adminUserIdList);

    /**
     * 批量选择用户授权
     */
    void insertAuthUser(Long roleId, List<Long> adminUserIdList);

    /**
     * 保存角色
     */
    Long addRole(RoleSaveDTO role);

    /**
     * 编辑角色
     */
    Long editRole(RoleSaveDTO role);

}
